import { defineStore } from 'pinia'

// 你可以对 `defineStore()` 的返回值进行任意命名，但最好使用 store 的名字，同时以 `use` 开头且以 `Store` 结尾。(比如 `useUserStore`，`useCartStore`，`useProductStore`)
// 第一个参数是你的应用中 Store 的唯一 ID。
export const cartStore = defineStore('cart', {
    state() {
        return {
            cartList: []
        }
    },

    actions: {
        // 添加到购物车
        addCart(id) {
            // 先判断购物车是否已有，如果有，数量+1
            const isAdded = this.cartList.find(item => item.id === id);
            if (isAdded) {
                isAdded.count++;
            } else {
                this.cartList.push({
                    id: id,
                    count: 1
                })
            }
        },

        // 修改商品数量
        editCartCount(payload) {
            const product = this.cartList.find(item => item.id === payload.id);
            product.count += payload.count;
        },
        // 删除商品
        deleteCart(id) {
            const index = this.cartList.findIndex(item => item.id === id);
            this.cartList.splice(index, 1);
        },
        // 清空购物车
        emptyCart() {
            this.cartList = [];
        }
    }
})